<?php

set_time_limit(0);
error_reporting(E_ALL ^ E_NOTICE ^ E_WARNING);

// 配置
$glb_cfg_imgs_dir = "profile";          // 头像图片文件夹
$glb_cfg_is_gb = true; //文件系统是否为gbk，涉及转码，否则找不到图片
$glb_cfg_excel = iconv('utf-8','gbk','data/excel-data.xls');		// excel数据
$glb_cfg_quilty = 100;		// jpeg生成质量 ， 最后要生成100的 
$_rPerStep = 60; //分页

$glb_redirect ='';

// 广西高技 证件生成程序
include_once 'globle.php';

// --------------------------------------
// 注意如果某些人没有部门，要用单独的背景模板，在数据表中要配置部门为0，详见代码。


?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title><?php echo $_cfg['APP_NAME']; ?></title>
    </head>
    <body style="font-size:14px; color:#000; text-align:left">

<?php

// include_once 'lib/php_img_class/class_img.php';
//分步执行需要的

$stid = isset($_GET['stid']) ? $_GET['stid'] : 0;
$endid = $stid + $_rPerStep;
$maxid = 800;



// 对文件名作清洗
function getNewName($imgfile) {
    $imgfile = str_replace('――', '', $imgfile);
    $imgfile = str_replace('数控综合', '', $imgfile);
    $imgfile = str_replace('模具制造', '', $imgfile);
    $imgfile = str_replace('装配钳工', '', $imgfile);
    $imgfile = str_replace('数控车', '', $imgfile);
    $imgfile = str_replace('数控铣', '', $imgfile);
    $imgfile = str_replace('车加工', '', $imgfile);
    $imgfile = str_replace('液压', '', $imgfile);
    $imgfile = str_replace('数控维修', '', $imgfile);
    $imgfile = str_replace('指导老师', '', $imgfile);
    $imgfile = str_replace('与气动', '', $imgfile);
    $imgfile = str_replace('数控装调维修', '', $imgfile);
    $imgfile = str_replace('加工', '', $imgfile);
    $imgfile = str_replace('―', '', $imgfile);
    return $imgfile;
}


// 读取所有图片
$path = $glb_cfg_imgs_dir;
$handle = opendir($path); //当前目录
$imgkzm = array('jpg', 'JPG', 'bmp', 'BMP', 'gif', 'GIF');
$imgarray = array();
while (false !== ($file = readdir($handle))) {  //遍历目录
    list($filesname, $kzm) = explode(".", $file); //获取扩展名
    if (in_array($kzm, $imgkzm)) { //文件过滤
        if (!is_dir('./' . $file)) { //文件夹过滤
			$file =  strtolower($file); //要在转码之前就转，否则转为utf8后无法进行小写转换 
            $fileOldGB = $path . '/' . $file;
            if(!$glb_cfg_is_gb) $file = iconv("gb2312", "UTF-8", $file);
            $fileNew = getNewName($file);
            $fileNewGB = $path . '/' . iconv("UTF-8", "gb2312", $fileNew);
            //rename($fileOldGB, $fileNewGB);
            $imgarray[] = $fileOldGB; //把符合条件的文件名存入数组
        }
    }
}
echo '<pre>';
//print_r($imgarray);
echo '</pre>';


//die('图片读取完毕！');
// 读取excel得到所有选手文字信息
/** 使用 PHPExcel_IOFactory */
include 'lib/PHPExcel/IOFactory.php';
$inputFileType = 'Excel5';
$inputFileName = $glb_cfg_excel;
$objReader = PHPExcel_IOFactory::createReader($inputFileType);
$objPHPExcel = $objReader->load($inputFileName);
$sheetData = $objPHPExcel->getActiveSheet()->toArray(null, true, true, true);

//计算完成
$done_100p = ceil( $endid / count($sheetData)*100) ; 
if ( $done_100p > 100 ) $done_100p = 100;
echo "<h2 style='  background-color: rgb(97, 249, 116);  width: $done_100p%; min-width:300px; '>$stid-$endid  已完成： $done_100p%  </h2>";

//die(print_r($sheetData));

$nopic = array();


// 遍历每一行
foreach ($sheetData as $key => $val) {
    if ($key < 2) {      // 下标从1开始 
        continue;
    }
	
	// 如果小于开始id就跳过 不生成 
	if(  $key < $stid ) continue; 
	
	// 如果大于结束id就跳转 
	if(  $key > $endid  ){ //如果不是当前页就不处理，直接跳转
		$glb_redirect = "setTimeout(\"window.location.href='build.php?stid={$endid}&rand=".rand(100,1000)."'\",100)";
		echo "===========break=======";
		break;
	}
	
	
    // 获取单个人信息，某些项要去除空格
    $gh = str_replace(' ', '', str_replace('　', '', $val['B']));    // 工号
    $xm = str_replace(' ', '', str_replace('　', '', $val['C']));    // 姓名 
    $xm2 = str_replace(' ', '', str_replace('　', '', $val['H']));    // 姓名2 别名
	$zw = str_replace(' ', '', str_replace('　', '', $val['D']));  // 职务或职称
	$bm = str_replace(' ', '', str_replace('　', '', $val['E']));  // 部门
	$isP = str_replace(' ', '', str_replace('　', '', $val['G']));  // 是否有照片标记

    //echo mb_detect_encoding($xm);

    // 从这开始基本数据正常
    //echo "gh:$gh; xm:$xm; zw:$zw; bm:$bm <br>";
	
	//echo '' . $bm . ''   . $xm .'<BR>' ;
	// 头像文件是 部门+姓名 的格式
	// $pro_ut = "$glb_cfg_imgs_dir/".$bm.$xm.'.jpg';
	// $pro_gb = iconv('UTF-8','GB2312',"$glb_cfg_imgs_dir/".$bm.$xm.'.jpg');
	// $pro2_ut = "$glb_cfg_imgs_dir/".$bm.$xm2.'.jpg';
	// $pro2_gb = iconv('UTF-8','GB2312',"$glb_cfg_imgs_dir/".$bm.$xm2.'.jpg');
	
	// 头像文件是 姓名 的格式
	$pro_ut = "$glb_cfg_imgs_dir/".$xm.'.jpg';
	$pro2_ut = "$glb_cfg_imgs_dir/".$xm2.'.jpg';
    if($glb_cfg_is_gb){ //如果是国标系统
        $pro_gb  =  "$glb_cfg_imgs_dir/".$xm.'.jpg';
        $pro2_gb = "$glb_cfg_imgs_dir/".$xm2.'.jpg';
    }else{
        $pro_gb  = iconv('UTF-8','GB2312',"$glb_cfg_imgs_dir/".$xm.'.jpg');
        $pro2_gb = iconv('UTF-8','GB2312',"$glb_cfg_imgs_dir/".$xm2.'.jpg');
    }
	
    if ( !in_array( $pro_gb,  $imgarray) &&  !in_array( $pro2_gb, $imgarray)      ) 
	{
        $nopic[] = ''. " \t($key)$isP " . $bm . ' '   . $xm ."  " ;
		//echo 'not FOUND:' . $bm . ''   . $xm;
    }
	
	
	//echo $xm;
    if (   in_array( $pro_gb, $imgarray) || in_array( $pro2_gb, $imgarray)      ) {     //原名或者别名存在
		
		// 测试名单，只有在测试名单的才生成 
		$temp_s4 = '杨某,张某';
		if( !in_array($xm, explode(',',$temp_s4)    ) ){
			//continue;  //启用测试名单请取消注释
		}
		
		
        //echo ' xm:', $xm, ' bh:', $bh, ' db:', $db, ' xx:', $xx,   '<hr />';
        //echo '<img width="200" src="profile/',$xm,'.jpg" />', '<br />';
        $wFile = "bg/bg.jpg"; // 背景
        $wFile_nodept = "bg/bg2.jpg"; // 背景(无部门)
		if( $xm2 <> '' ){  // 有别名就用别名找头像
			$waterimg = $pro2_gb; //别名头像图片路径
		}else{
			$waterimg = $pro_gb; //头像图片路径
		}
        
        thumb_dblxr($waterimg, 600, 664, $waterimg);
		if($bm == '0'){
			$im = imageCreatefromjpeg($wFile_nodept);
		}else{
			$im = imageCreatefromjpeg($wFile);
		}
        //echo $wfilew,$wfileh;  // 成功
        imagealphablending($im, true); //设定混合模式
        $im2 = imagecreatefromjpeg($waterimg); //读取头像文件
        $waterw = imagesx($im2); //取得头像图片的宽
        $waterh = imagesy($im2); //取得头像图片的高
        // 加入头像
        imagecopy($im, $im2, 370, 450, 0, 0, $waterw, $waterh);

        $negro = imagecolorallocate($im, 0, 0, 0); // 字体颜色
        $font = realpath("simhei.ttf");   // 字体文件
        $default_em = 44;
        $default_locX = 525;  // 左基准线
        /**
         *  姓名处理                          居中显示 并且如果是两个字的话中间加空格
         */
        $em = $default_em;
		$locX = $default_locX+115;
		$locY = $bm=='0' ? 1156+150+30 : 1126+146+17; //两种底版
        if (abslength($xm) == 3) {
            ImageTTFText($im, $em, 0, $locX, $locY, $negro, $font, $xm);  // 3个字的姓名输出
        } elseif (abslength($xm) == 2) {
            // 2个字的姓名 中间加空格
            $c1 = csubstr($xm, 0, 1);
            $c2 = csubstr($xm, 1, 1);
            $xm_s = $c1 . '  ' . $c2;
            ImageTTFText($im, $em, 0, $locX, $locY, $negro, $font, $xm_s);  // 输出
        } else {
            ImageTTFText($im, $em, 0, $locX-40, $locY, $negro, $font, $xm);  // 其它个数(4)的字的姓名输出
        }


        // 职务输出 
        $em = 40;
        $locX = $default_locX+10;   //490 初始偏移
		$locY = $bm=='0' ? 1250+158+30 : 1220+156+17; //两种底版
		$zw_s = $zw;
        switch (abslength($zw)) {
            case 2:
                $locX += 100;
                $em = $default_em;
				$zw_s = csubstr($zw, 0, 1)  . '  ' . csubstr($zw, 1, 1); //把字拆开中间加空格
                break;
            case 3:
                $locX += 100;
                $em = $default_em;
                break;
            case 4:
                $locX += 75;
                $em = $default_em;
                break;
            case 5:
                $locX += 55;
                $em = $default_em;
                break;
            case 6:
                $locX += 20;
                $em = $default_em;
                break;
            case 7:
                $locX -= 0;
                break;
            case 8:
                $locX -= 14;
                $em = $default_em - 5;
                break;
            case 9:
                $locX -= 14;
                $em = $default_em - 9;
                break;
            case 10:
                $locX -= 14;
                $em = $default_em - 12;
                break;
            case 11:
                $locX -= 14;
                $em = $default_em - 14;
                break;
            case 12:
                $locX -= 14;
                $em = $default_em - 14;
                break;
            case 13:
                $locX -= 14;
                $em = $default_em - 14;
                break;
            case 14:
                $locX -= 14;
                $em = $default_em - 16;
                break;
            default:
                $locX -= 14;
                $em = $default_em - 16;
                break;
        }
        ImageTTFText($im, $em, 0, $locX, $locY, $negro, $font, $zw_s);

        /**
         * 部门输出
         */
        // 根据字数调整字号 位置
        $em = 40;
        $locX = $default_locX+11;   // 490初始偏移
		$bm_s = $bm;
        switch (abslength($bm)) {
            case 2:
                $locX += 100;
                $em = $default_em;
				$bm_s = csubstr($bm, 0, 1)  . '  ' . csubstr($bm, 1, 1); //把字拆开中间加空格
                break;
            case 3:
                $locX += 100;
                $em = $default_em;
                break;
            case 4:
                $locX += 75;
                $em = $default_em;
                break;
            case 5:
                $locX += 55;
                $em = $default_em;
                break;
            case 6:
                $locX += 20;
                $em = $default_em;
                break;
            case 7:
                $locX += 0;
                break;
            case 8:
                $locX += 0;
                $em = $default_em - 5;
                break;
            case 9:
                $locX += 0;
                $em = $default_em - 9;
                break;
            case 10:
                $locX += 0;
                $em = $default_em - 12;
                break;
            case 11:
                $locX += 0;
                $em = $default_em - 14;
                break;
            case 12:
                $locX += 0;
                $em = $default_em - 14;
                break;
            case 13:
                $locX += 0;
                $em = $default_em - 14;
                break;
            case 14:
                $locX += 0;
                $em = $default_em - 16;
                break;
            default:
                $locX += 0;
                $em = $default_em - 16;
                break;
        }
        
		if( !($bm=='0') ) ImageTTFText($im, $em, 0, $locX, 1307+166+17, $negro, $font, $bm_s); 

		
		
        /**
         * 工号输出
         */
        $em = $default_em;
		$locY = $bm=='0' ? 1340+170+30 : 1400+178+17; //两种底版
		$locX = $default_locX + 110; 
        if (abslength($gh) < 4) {
            ImageTTFText($im, $em, 0, $locX+16, $locY, $negro, $font, $gh);
        } else {
            ImageTTFText($im, $em, 0, $locX+10, $locY, $negro, $font, $gh);
        }

		
		$temp_xm_xxdf45 =  $xm2 <> '' ?  $xm2  : $xm; 
		$temp_32451_fname_ut =   $bm.$temp_xm_xxdf45.'('.$zw.')'.'.jpg';
		$temp_32451_fname_gb =   iconv("UTF-8", "gb2312", $temp_32451_fname_ut);
        imagejpeg($im, 'out/'.$temp_32451_fname_gb, $glb_cfg_quilty ); //最后一个参数是输出质量
		
        //echo '<img width="500" src="out/'.$temp_32451_fname_ut.'" />', '<br />';
        echo ( $key  ) . '  xm:', $xm, ' gh:', $gh, ' bm:', $bm, ' zw:', $zw, '<hr />';
        imagedestroy($im);
        imagedestroy($im2);
    }
}



echo "没有头像的人员：";
echo '<pre>';
print_r($nopic);
echo '</pre>';

echo $glb_redirect;



	?>

	
<script>
<?php echo $glb_redirect; ?>
</script>

    </body>
</html>
